import abc

class Node:
	_stats = []
	_parent = None;
	_left_child = None;
	_right_child = None;
	

class Tree:
	__metaclass__ = abc.ABCMeta
	def __init__(self):
		return
	@abc.abstractmethod
	def read_tree(self, f):
		return NotImplemented
	def read_data(self,f):
		return NotImplemented
	def calc_llh(self, model):
		return NotImplemented 
	

class Model:
	__metaclass__ = abc.ABCMeta
	def __init__(self):
		return

	@abc.abstractmethod
	def prob(self, nu1, nu2, t):
		return NotImplemented 
	def update(self):
		return NotImplemented
	
if __name__ == '__main__':
	try:
		tree = Tree()
		print 'tree is here: ', Tree	
	except Exception, err:
		print "hey, implement Tree and Model"
		print "Hmm"
